package org.dromara.assets.util;

import java.util.HashMap;
import java.util.LinkedHashSet;
import java.util.Set;

/**
 * 数据缓存类
 */
public class DataCache {
    private static final int MAX_SIZE = 100;  // 最大数据条数
    private final HashMap<String, Set<String>> dataMap = new HashMap<>();

    // 向集合中添加数据
    public void addData(String symbol, String data) {
        Set<String> dataSet = dataMap.computeIfAbsent(symbol, k -> new LinkedHashSet<>());
        if (dataSet.contains(data)) {
            return;
        }
        // 如果集合的大小超过最大限制，移除最早的数据
        if (dataSet.size() >= MAX_SIZE) {
            // 移除集合中的第一个元素（最早插入的元素）
            dataSet.remove(dataSet.iterator().next());
        }
        // 添加新数据
        dataSet.add(data);
    }

    // 判断某个字符串是否存在
    public boolean contains(String symbol, String data) {
        Set<String> dataSet = dataMap.get(symbol);
        if (dataSet == null) {
            return false;
        }
        return dataSet.contains(data);
    }
}
